package study;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Timer            定时器，调度器
 * 构造方法
 * Timer()                      创建一个新的计时器
 * Timer(boolean isDaemon)      创建一个新的定时器，参数为true时其相关线程可以指定为 run as a daemon （守护线程）
 * Timer(String name)           创建一个新的定时器，其相关线程具有指定的名称
 * Timer(String name, boolean isDaemon) 创建一个新的定时器，其相关线程具有指定的名称，可以指定为 run as a daemon
 * 实例方法
 * void cancel()                终止此计时器，丢弃任何当前计划的任务，将任务队列中的全部任务清空
 * void schedule(TimerTask task, Date time)         在指定的时间安排指定的任务执行
 * void schedule(TimerTask task, Date firstTime, long period)   从指定的时间开始 ，对指定的任务执行重复定时执行
 * void schedule(TimerTask task, long delay)        在指定的延迟之后安排指定的任务执行，时间单位：毫秒
 * void schedule(TimerTask task, long delay, long period)   在指定的延迟之后开始 ，重新执行固定延迟执行的指定任务
 * void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
 *                                  从指定的时间开始，对指定的任务执行以固定速率执行
 * void scheduleAtFixedRate(TimerTask task, long delay, long period)
 *                                  在指定的延迟之后开始 ，以固定速率重新执行指定任务
 *
 * TimerTask        定时任务，调度任务
 *
 * */
public class TimerDemo {
    static int i = 0;
    public static void main(String[] args) {
        Timer timer = new Timer();      // 定时器对象
        int interval = 10;      // 定时间隔(单位毫秒)
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("第" + (++TimerDemo.i) + "次执行");
            }
        }, interval, interval);   // 参数二表示从程序启动到第一次触发的时间间隔，参数三表示定时触发的时间间隔
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        timer.cancel();
    }
}
